// 导入数据库模块
const db = require('../db/index')
// 导入密码加密模块
const bcrypt = require('bcryptjs')

// 用户信息路由对应处理函数
exports.getUserinfo = function(req, res) {
    console.log(req.query)
    // 定义查询SQL语句
    const selectUserInfoSQL = 'select id, username, nickname, avatar from blog_users where id=?'
    // 执行查询语句
    db.query(selectUserInfoSQL, req.query.id, (err, result) => {
        // SQL执行出错误
        if (err) return res.cc(err.message)
        // 用户不存在
        if (result.length < 1) return res.cc('获取用户信息失败')
        // 获取成功
        res.send({
            status: 0,
            data: result[0],
            msg: '获取成功'
        })
    })
}

//  更新用户信息路由对应处理函数
exports.aditUserInfo = function(req, res) {
    console.log(req.body)
    // 定义SQL更新语句
    const updateSQL = 'update blog_users set ? where id=?'
    // 执行SQL语句
    db.query(updateSQL, [req.body, req.body.id], (err, result) => {
        // SQL执行出错
        if (err) return res.cc(err.message)
        // SQL执行成功 影响行数不为1
        if (result.affectedRows !== 1) return res.cc('更新用户信息失败')
        // 更新成功
        res.cc('用户信息更新成功', 0)
    })
}

// 修改密码路由对应处理函数
exports.updatePwd = function(req, res) {
    console.log(req)
    // 定义查询用户信息的SQL语句
    const selectSQL = 'select * from blog_users where id=?'
    // 执行SQL语句
    db.query(selectSQL, req.query.id, (err, result) => {
        // SQL执行错误
        if (err) return res.cc(err.message)
        // 没有查找到该用户
        if (result.length < 1) return res.cc('用户不存在')
        // 查询成功
        // 原始密码错误
        const compare = bcrypt.compareSync(req.body.oldPwd, result[0].password)
        if (!compare) return res.cc('原始密码错误')

        // 定义修改密码的SQL语句
        const updatePwd = 'update blog_users set password=? where id=?'
        // 对新密码进行加密
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
        // 执行SQL语句
        db.query(updatePwd, [newPwd, req.query.id], (err, result) => {
            // SQL执行错误
            if (err) return res.cc(err.message)
            // 影响行数不等于1
            if (result.affectedRows !== 1) return res.cc('更新密码失败')
            // 成功
            res.cc('更新密码成功', 0)
        })
    })
}